home *** CD-ROM | disk | FTP | other *** search
- ;
- ; Exmaple program for dbaselib
- ;
-
- WBStartup
-
- #WIN_ADDR=1
- #DB_ADDR=1
-
- #Name=1
- #mAddr1=2
- #mAddr2=3
- #mAddr3=4
- #mAddr4=5
- #Tel=6
- #gFirst=7
- #gPrev=8
- #gNext=9
- #gLast=10
- #Clear=11
- #Store=12
- #Delete=13
- #Search=14
- #SNext=15
-
- NEWTYPE.abook
- name.b[64]
- paddr1.b[32]
- paddr2.b[32]
- paddr3.b[32]
- paddr4.b[32]
- tel.b[32]
- End NEWTYPE
-
- DEFTYPE.abook REC
-
- USEPATH REC
-
-
- Statement addr_enable{}
- GTEnable #WIN_ADDR,#gFirst
- GTEnable #WIN_ADDR,#gLast
- GTEnable #WIN_ADDR,#Delete
- GTEnable #WIN_ADDR,#Search
- GTEnable #WIN_ADDR,#SNext
- End Statement
-
- Statement addr_disable{}
- GTDisable #WIN_ADDR,#gFirst
- GTDisable #WIN_ADDR,#gLast
- GTDisable #WIN_ADDR,#gNext
- GTDisable #WIN_ADDR,#gPrev
- GTDisable #WIN_ADDR,#Delete
- GTDisable #WIN_ADDR,#Search
- GTDisable #WIN_ADDR,#SNext
- End Statement
-
- Statement addr_check{}
- If DBrecs(#DB_ADDR)
- addr_enable{}
-
- If DBisnext(#DB_ADDR)
- GTEnable #WIN_ADDR,#gNext
- Else
- GTDisable #WIN_ADDR,#gNext
- End If
-
- If DBisprev(#DB_ADDR)
- GTEnable #WIN_ADDR,#gPrev
- Else
- GTDisable #WIN_ADDR,#gPrev
- End If
-
- Else
- addr_disable{}
- End If
-
- For u=1 To 15
- Redraw #WIN_ADDR,u
- Next u
-
- End Statement
-
- Statement addr_show{}
- SHARED REC
-
- addr_check{}
-
- GTSetString #WIN_ADDR,#Name,FlsToStr$(\name,64)
- GTSetString #WIN_ADDR,#mAddr1,FlsToStr$(\paddr1,32)
- GTSetString #WIN_ADDR,#mAddr2,FlsToStr$(\paddr2,32)
- GTSetString #WIN_ADDR,#mAddr3,FlsToStr$(\paddr3,32)
- GTSetString #WIN_ADDR,#mAddr4,FlsToStr$(\paddr4,32)
- GTSetString #WIN_ADDR,#Tel,FlsToStr$(\tel,32)
- End Statement
-
- Statement addr_clear{}
- SHARED REC,ADDR_RECM,ADDR_RECC
- StrToFls "",REC,SizeOf.abook
- ADDR_RECM=0:ADDR_RECC=1:addr_show{}
- GTDisable #WIN_ADDR,#Delete
- Redraw #WIN_ADDR,#Delete
- ActivateString #WIN_ADDR,#Name
- End Statement
-
- Statement openwindow{}
- WbToScreen #WIN_ADDR
- WBenchToFront_
- GTString #WIN_ADDR,#Name, 9, 4,200,14,"Name",2,64
- GTString #WIN_ADDR,#mAddr1, 9,18,200,14,"Address",2,32
- GTString #WIN_ADDR,#mAddr2, 9,32,200,14,"",2,32
- GTString #WIN_ADDR,#mAddr3, 9,46,200,14,"",2,32
- GTString #WIN_ADDR,#mAddr4, 9,60,200,14,"",2,32
- GTString #WIN_ADDR,#Tel, 9,74,200,14,"Telephone",2,32
- GTButton #WIN_ADDR,#gFirst, 9,92, 60,14,"|<",0
- GTButton #WIN_ADDR,#gPrev, 79,92, 60,14,"<<",0
- GTButton #WIN_ADDR,#gNext,149,92, 60,14,">>",0
- GTButton #WIN_ADDR,#gLast,219,92, 60,14,">|",0
- GTButton #WIN_ADDR,#Clear, 9,108, 80,14,"New",0
- GTButton #WIN_ADDR,#Store,104,108, 80,14,"Store",0
- GTButton #WIN_ADDR,#Delete,199,108,80,14,"Delete",0
- GTString #WIN_ADDR,#Search,9,140,200,14,"Search",4,32
- GTButton #WIN_ADDR,#SNext,219,140,60,14,"Next",0
-
- Window #WIN_ADDR,0,10,300,180,$100E,"Address Book (DBlib Demo)",0,1
-
- AttachGTList #WIN_ADDR,#WIN_ADDR
- End Statement
-
- .main
- ; initialise/load database
- ok=DBLoad(#DB_ADDR,"Address.Book")
- If ok=0 Then ok=DBInit(#DB_ADDR,1,1,REC,64)
- If ok
- ; open up the window on workbench
- openwindow{}
- ; check how many record are in the file (0=empty)
- If DBrecs(#DB_ADDR)>0
- ; set pointer to first record and read date
- DBfirst #DB_ADDR
- DBget #DB_ADDR,REC
- ADDR_RECC=0
- Else
- ; empty database, lets have a clear record then
- addr_clear{}
- End If
- addr_show{}:ADDR_RECM=0
- End If
-
- ev.l=0
- While (ev.l<>$200)
- ev.l=WaitEvent
- If ev.l=$40
-
- Select GadgetHit
-
- Case #Clear
- addr_clear{}
-
- Case #Name
- a$=GTGetString(#WIN_ADDR,#Name)
-
- If a$<>FlsToStr$(\name,64)
- ADDR_RECM=1
- StrToFls a$,\name,64
- End If
-
- Case #Tel
- a$=GTGetString(#WIN_ADDR,#Tel)
- If a$<>FlsToStr$(\tel,32)
- ADDR_RECM=1
- StrToFls a$,\tel,32
- End If
-
- Case #mAddr1
- a$=GTGetString(#WIN_ADDR,#mAddr1)
- If a$<>FlsToStr$(\paddr1,32)
- ADDR_RECM=1
- StrToFls a$,\paddr1,32
- End If
-
- Case #mAddr2
- a$=GTGetString(#WIN_ADDR,#mAddr2)
- If a$<>FlsToStr$(\paddr2,32)
- ADDR_RECM=1
- StrToFls a$,\paddr2,32
- End If
-
- Case #mAddr3
- a$=GTGetString(#WIN_ADDR,#mAddr3)
- If a$<>FlsToStr$(\paddr3,32)
- ADDR_RECM=1
- StrToFls a$,\paddr3,32
- End If
-
- Case #mAddr4
- a$=GTGetString(#WIN_ADDR,#mAddr4)
- If a$<>FlsToStr$(\paddr4,32)
- ADDR_RECM=1
- StrToFls a$,\paddr4,32
- End If
-
- Case #Store
- DBCasesense Off
- If ADDR_RECM=1
- If ADDR_RECC=1
- ; if record was cleared add the entry
- DBadd #DB_ADDR,REC
- Else
- ; if record has been modified, update it
- DBupdate #DB_ADDR,REC
- End If
- End If
- ADDR_RECC=0:ADDR_RECM=0
- addr_show{}
- DBCasesense On
-
-
- Case #gFirst
- ADDR_RECC=0:ADDR_RECM=0
- DBfirst #DB_ADDR
- DBget #DB_ADDR,REC:addr_show{}
-
- Case #gLast
- ADDR_RECC=0:ADDR_RECM=0
- DBlast #DB_ADDR
- DBget #DB_ADDR,REC:addr_show{}
-
- Case #gNext
- ADDR_RECC=0:ADDR_RECM=0
- DBnext #DB_ADDR
- DBget #DB_ADDR,REC:addr_show{}
-
- Case #gPrev
- ADDR_RECC=0:ADDR_RECM=0
- DBprev #DB_ADDR
- DBget #DB_ADDR,REC:addr_show{}
-
- Case #Delete
- ADDR_RECC=0:ADDR_RECM=0
- DBdelete #DB_ADDR
- If DBrecs(#DB_ADDR)=0
- addr_clear{}
- Else
- DBget #DB_ADDR,REC
- End If
- addr_show{}
-
- Case #Search
- DBCasesense Off
-
- a$=GTGetString(#WIN_ADDR,#Search)
- ok=DBfind(#DB_ADDR,a$)
- If ok
- DBget #DB_ADDR,REC
- addr_show{}
- End If
-
- DBCasesense On
-
- Case #SNext
- DBCasesense Off
- a$=GTGetString(#WIN_ADDR,#Search)
- ok=DBfindnext(#DB_ADDR)
- If ok
- DBget #DB_ADDR,REC
- addr_show{}
- End If
-
- DBCasesense On
-
- End Select
-
- End If
- Wend
-
- DBSave #DB_ADDR,"Address.Book"
- CloseWindow #WIN_ADDR
- End
-